package com.tbit.uqbike.webmanager.dao.stat;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.AccountSumStat;
import com.tbit.uqbike.object.pojo.vo.ScreenPieVO;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 区域数据按小时预统计(总的)
 *
 * @Author:BUGTian
 * @DATE: 2022/11/7
 */
@DS(DataSource.STAT)
public interface AccountSumStatDao extends BaseMapper<AccountSumStat> {
    /**
     * 区域数据汇总统计，根据type
     *
     * @param accountIdList
     * @return
     */
    @MapKey("datatype")
    Map<Integer, Map<String, Object>> statAccountSumData(@Param("accountIdList") List<Integer> accountIdList, @Param("brandId") Integer brandId);

    /**
     * 平台用户分布
     *
     * @param accountIdList
     * @return
     */
    List<ScreenPieVO> userDistribution(@Param("accountIdList") List<Integer> accountIdList, @Param("brandId") Integer brandId);

    /**
     * 单个参数返回 数量
     *
     * @param accountIdList
     * @param dataType
     * @param brandId
     * @return
     */
    Long singleCntResult(@Param("accountIdList") List<Integer> accountIdList, @Param("dataType") Integer dataType, @Param("brandId") Integer brandId);

    /**
     * 平台订单情况
     *
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> orderCondition(@Param("accountIdList") List<Integer> accountIdList, @Param("brandId") Integer brandId);

    /**
     * 单个参数返回  金额
     *
     * @param accountIdList
     * @param dataType
     * @param brandId
     * @return
     */
    Long singleSumResult(@Param("accountIdList") List<Integer> accountIdList, @Param("dataType") Integer dataType, @Param("brandId") Integer brandId);

    /**
     * 交易数据
     *
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> transactionData(@Param("accountIdList") List<Integer> accountIdList, @Param("brandId") Integer brandId);

    /**
     * 总流水分布概况
     *
     * @param accountIdList
     * @param brandId
     * @return
     */
    List<ScreenPieVO> pipelineDistribution(@Param("accountIdList") List<Integer> accountIdList, @Param("brandId") Integer brandId);

    /**
     * 单个参数返回 数量 accountdaystat表
     * @param accountIdList
     * @param dataType
     * @param brandId
     * @param startDataDate
     * @param endDateDate
     * @return
     */
    Long singleCntResultToAccountDayStat(@Param("accountIdList") List<Integer> accountIdList, @Param("dataType") Integer dataType, @Param("brandId") Integer brandId, @Param("startDataDate") Integer startDataDate, @Param("endDateDate") Integer endDateDate);

    /**
     *  单个参数返回  金额 accountdaystat表
     * @param accountIdList
     * @param dataType
     * @param brandId
     * @param startDataDate
     * @param endDateDate
     * @return
     */
    Long singleSumResultToAccountDayStat(@Param("accountIdList") List<Integer> accountIdList, @Param("dataType") Integer dataType, @Param("brandId") Integer brandId, @Param("startDataDate") Integer startDataDate, @Param("endDateDate") Integer endDateDate);
}
